<html>
<head>
<style type="text/css">
:root {
    --background: #fff;
    --background-odd: #f5f5f5;
    --background-hover: #d9edfd;
    --header-text-color: #474747;
    --text-color: #848484;
    --text-color-dark: #000;
    --text-color-medium: #737373;
    --text-color-pale: #b3b3b3;
    --inner-border-color: #aaa;
    --bold-border-color: #000;
    --link-color: #296eaa;
    --link-color-pale: #296eaa;
    --link-hover: #1a466c;
}
:root[theme="dark"], :root [data-jp-theme-light="false"] {
    --background: #303030;
    --background-odd: #3c3c3c;
    --background-hover: #464646;
    --header-text-color: #dddddd;
    --text-color: #b3b3b3;
    --text-color-dark: #dddddd;
    --text-color-medium: #b2b2b2;
    --text-color-pale: #737373;
    --inner-border-color: #707070;
    --bold-border-color: #777777;
    --link-color: #008dc0;
    --link-color-pale: #97e1fb;
    --link-hover: #00688e;
}
body {
    font-family: "JetBrains Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;
}
:root {
    color: #19191C;
    background-color: #fff;
}
:root[theme="dark"] {
    background-color: #19191C;
    color: #FFFFFFCC
}
</style>
<script>
    function calculateBodyHeight() {
        const body = document.body;
        const html = document.documentElement;
        return Math.max(
            body.scrollHeight,
            body.offsetHeight,
            html.scrollHeight,
            html.offsetHeight,
            html.clientHeight
        );
    }
    
    function sendHeight() {
        const height = calculateBodyHeight();
        window.parent.postMessage({ type: 'iframeHeight', height }, '*');
    }
    
    function repeatHeightCalculation(maxRetries = 10, interval = 100) {
        let retries = 0;
        const intervalId = setInterval(() => {
            sendHeight();
            retries++;
            if (retries >= maxRetries) clearInterval(intervalId);
        }, interval);
    }
    
    window.addEventListener('load', () => {
        repeatHeightCalculation();
        const observer = new MutationObserver(() => {
            setTimeout(sendHeight, 50);
        });
        observer.observe(document.body, {
            childList: true,
            subtree: true,
            characterData: true
        });
    });
    
    window.addEventListener('resize', sendHeight);
</script>
</head>
<body><h3>Definitions:</h3><p><code>cellFormatter: </code><code>FormattingDsl</code><code>.(cell: C) -&gt; </code><code>CellAttributes</code><code>?</code></p><p>    </p><p><code>rowColFormatter: </code><code>FormattingDsl</code><code>.(row: </code><code>DataRow</code><code>&lt;T&gt;, col: </code><code>ColumnWithPath</code><code>&lt;C&gt;) -&gt; </code><code>CellAttributes</code><code>?</code></p><h3>Notation:</h3><p><code><strong>format</strong></code><strong><code> { </code></strong><code><code>columns</code></code><strong><code> }</code></strong></p><p>    
<code>[ </code><strong><code>.</code></strong><code><strong><code>where</code></strong></code><strong><code> { </code></strong><code><code>filter</code></code><code>: </code><code><code>RowValueFilter</code></code><strong><code> } </code></strong><code>]</code></p><p>    
<code>[ </code><strong><code>.</code></strong><code><strong><code>at</code></strong></code><strong><code>(</code></strong><code>rowIndices: </code><code>Collection</code><code>&lt;</code><code>Int</code><code>&gt; | </code><code>IntRange</code><code>|</code><strong><code>vararg</code></strong><code> </code><code>Int</code><strong><code>)</code></strong><code> ]</code></p><p>    
<code>[ </code><strong><code>.</code></strong><code><strong><code>notNull</code></strong></code><strong><code>()</code></strong><code> ]</code></p><p>    
<strong><code>.</code></strong><code><strong><code>with</code></strong></code><strong><code> { </code></strong><code>cellFormatter</code><strong><code> }</code></strong></p><p>    
<code>| </code><strong><code>.</code></strong><code><strong><code>notNull</code></strong></code><strong><code> { </code></strong><code>cellFormatter</code><strong><code> }</code></strong></p><p>    
<code>| </code><strong><code>.</code></strong><code><strong><code>perRowCol</code></strong></code><strong><code> { </code></strong><code>rowColFormatter</code><strong><code> }</code></strong></p><p>    
<code>| </code><strong><code>.</code></strong><code><strong><code>linearBg</code></strong></code><strong><code>(</code></strong><code>from: </code><code>Pair</code><code>&lt;</code><code>Number</code><code>, </code><code>RgbColor</code><code>&gt;</code><strong><code>,</code></strong><code>to:</code><code>Pair</code><code>&lt;</code><code>Number</code><code>, </code><code>RgbColor</code><code>&gt;</code><strong><code>)</code></strong></p><p><code>[ </code><strong><code>.</code></strong><code><strong>format</strong></code><code> ↺ ]</code></p><p>    </p><h2>Formatting DSL Grammar</h2><h3>Definitions:</h3><p><code>cellAttributes: </code><code>CellAttributes</code></p><p>    </p><p><code>color: </code><code>RgbColor</code></p><h3>Notation:</h3><p><em>- Returning <code>CellAttributes</code></em>:</p><p><code>cellAttributes</code><code> </code><code><strong><code>and</code></strong></code><code> </code><code>cellAttributes</code></p><p><code>| </code><code><strong><code>italic</code></strong></code><code> | </code><code><strong><code>bold</code></strong></code><code> | </code><code><strong><code>underline</code></strong></code></p><p><code>| </code><code><strong><code>background</code></strong></code><strong><code>(</code></strong><code>color</code><strong><code>)</code></strong></p><p><code>| </code><code><strong><code>background</code></strong></code><strong><code>(</code></strong><code>r: </code><code>Short</code><strong><code>,</code></strong><code>g:</code><code>Short</code><strong><code>,</code></strong><code>b:</code><code>Short</code><strong><code>)</code></strong></p><p><code>| </code><code><strong><code>linearBg</code></strong></code><strong><code>(</code></strong><code>value: </code><code>Number</code><strong><code>,</code></strong><code>from:</code><code>Pair</code><code>&lt;</code><code>Number</code><code>, </code><code>RgbColor</code><code>&gt;</code><strong><code>,</code></strong><code>to:</code><code>Pair</code><code>&lt;</code><code>Number</code><code>, </code><code>RgbColor</code><code>&gt;</code><strong><code>)</code></strong></p><p><code>| </code><code><strong><code>textColor</code></strong></code><strong><code>(</code></strong><code>color</code><strong><code>)</code></strong></p><p><code>| </code><code><strong><code>textColor</code></strong></code><strong><code>(</code></strong><code>r: </code><code>Short</code><strong><code>,</code></strong><code>g:</code><code>Short</code><strong><code>,</code></strong><code>b:</code><code>Short</code><strong><code>)</code></strong></p><p><code>| </code><code><strong><code>attr</code></strong></code><strong><code>(</code></strong><code>name: </code><code>String</code><strong><code>,</code></strong><code>value:</code><code>String</code><strong><code>)</code></strong></p><p><em>- Returning <code>RgbColor</code>:</em></p><p><code><strong><code>black</code></strong></code><code> | </code><code><strong><code>white</code></strong></code><code> | </code><code><strong><code>green</code></strong></code><code> | </code><code><strong><code>red</code></strong></code><code> | </code><code><strong><code>blue</code></strong></code><code> | </code><code><strong><code>gray</code></strong></code><code> | </code><code><strong><code>darkGray</code></strong></code><code> | </code><code><strong><code>lightGray</code></strong></code></p><p><code>| </code><code><strong><code>rgb</code></strong></code><strong><code>(</code></strong><code>r: </code><code>Short</code><strong><code>,</code></strong><code>g:</code><code>Short</code><strong><code>,</code></strong><code>b:</code><code>Short</code><strong><code>)</code></strong></p><p><code>| </code><code><strong><code>linear</code></strong></code><strong><code>(</code></strong><code>value: </code><code>Number</code><strong><code>,</code></strong><code>from:</code><code>Pair</code><code>&lt;</code><code>Number</code><code>, </code><code>RgbColor</code><code>&gt;</code><strong><code>,</code></strong><code>to:</code><code>Pair</code><code>&lt;</code><code>Number</code><code>, </code><code>RgbColor</code><code>&gt;</code><strong><code>)</code></strong></p></body>
<html/>
